package cn.epsilon3.service.user;


import cn.epsilon3.common.Result;
import cn.epsilon3.domain.e3.po.AccountInfo;
import cn.epsilon3.domain.e3.po.E3RolePo;
import cn.epsilon3.domain.e3.po.E3UserPo;
import cn.epsilon3.domain.e3.vo.E3CheckPasswordVO;
import cn.epsilon3.domain.e3.vo.E3ThirdUserInfoShareVO;
import cn.epsilon3.domain.e3.vo.FALoginVo;
import cn.epsilon3.domain.e3.vo.UserLoginVO;

/**
 * <p>
 * 系统用户表 服务类
 * </p>
 *
 * @author epsilon3
 * @since 2023-05-19
 */
public interface E3UserService {

    /**
     * 用户登录
     *
     * @param userLoginVO 用户登录提交数据
     * @return
     */
    Result<Object> e3UserLogin(UserLoginVO userLoginVO);

    /**
     * 用户多因子登录
     *
     * @return
     */
    Result<Object> e3UserFALogin(FALoginVo faLoginVo);

    /**
     * 用户退出登录
     *
     * @return
     */
    Result<String> e3UserLoginOut();

    /**
     * 验证密码
     *
     * @param e3CheckPasswordVO
     * @return
     */
    Result<String> e3CheckPassword(E3CheckPasswordVO e3CheckPasswordVO);

    /**
     *
     * @param aliUserInfoShareVO 三方平台用户数据
     * @return
     */
    Result<Object> thirdAuthLogin(E3ThirdUserInfoShareVO aliUserInfoShareVO);

    /**
     *
     * @param accountInfo 当前用户信息
     * @param e3UserPo 用户信息
     * @param e3RolePo 角色信息
     * @return
     */
    Result<Object> executeLogin(AccountInfo accountInfo, E3UserPo e3UserPo, E3RolePo e3RolePo);


}
